Matthias Clasen [Fri, 8 Mar 2019 15:19:12 +0000 (10:19 -0500)]
key controller: Improve the docs
Mention the limitations of the key forwarding api.
Matthias Clasen [Fri, 8 Mar 2019 15:16:27 +0000 (10:16 -0500)]
key controller: Add getters for focus event targets
This information can be needed in signal handlers,
so make it available.
Matthias Clasen [Fri, 8 Mar 2019 14:55:27 +0000 (09:55 -0500)]
key controller: Add focus properties
Add boolean properties, is-focus and contains-focus, that
track whether the focus is in the widget itself or in
one of its descendants.
Matthias Clasen [Fri, 8 Mar 2019 14:20:06 +0000 (09:20 -0500)]
key controller: Fix a copy/paste error
Prefix the finalize function properly.
Matthias Clasen [Thu, 7 Mar 2019 05:14:26 +0000 (00:14 -0500)]
Pass mode and detail to focus-in/out signals
This information is useful when maintaining a
'last focus' field.
Update all users.
Matthias Clasen [Fri, 8 Mar 2019 18:52:46 +0000 (13:52 -0500)]
Move maintaining the focus chain
Put this code in the same place where we generate
the crossing events.
Matthias Clasen [Fri, 8 Mar 2019 14:08:05 +0000 (09:08 -0500)]
Some fixes to crossing event generation
In the inferior and ancestor cases, we were missing
the initial/final event.
Matthias Clasen [Thu, 7 Mar 2019 04:40:29 +0000 (23:40 -0500)]
window: Use gtk_synthesize_crossing_events
Emit focus change events in the same way as crossing events.
Also change the code to only emit focus change events for
the master keyboard - we only maintain a single focus location,
so sending multiple focus change events for different devices
seems confusing.
Matthias Clasen [Thu, 7 Mar 2019 04:39:53 +0000 (23:39 -0500)]
Export gtk_synthesize_crossing_events internally
We want to use this for focus changes, now that
it can emit focus change events.
Matthias Clasen [Thu, 7 Mar 2019 03:25:31 +0000 (22:25 -0500)]
Share crossing and focus change event code
Make a single function that can emit both
enter/leave and focus change events.
Matthias Clasen [Fri, 8 Mar 2019 16:12:30 +0000 (11:12 -0500)]
gdk: Add a related_target field to some events
Crossing and focus change events are emitted between
two widgets, and want to associate both with the
events.
Matthias Clasen [Fri, 8 Mar 2019 16:27:16 +0000 (11:27 -0500)]
gdk: Rename gdk_event_set_user_data
Lets call it what it is, the target.
All of this is private api anyway.
Update all callers.
Matthias Clasen [Wed, 6 Mar 2019 21:55:27 +0000 (16:55 -0500)]
gdk: Add crossing mode and detail to focus events
We want focus events more similar to crossing events.
Matthias Clasen [Tue, 5 Mar 2019 01:15:39 +0000 (20:15 -0500)]
Clarify grab_focus docs
Matthias Clasen [Sun, 3 Mar 2019 17:31:12 +0000 (12:31 -0500)]
window: Remove initial-focus builder support
With focus-widget now a property, this is no longer needed.
Matthias Clasen [Sat, 16 Mar 2019 05:28:23 +0000 (01:28 -0400)]
window: Remove ::set-focus
The focus-widget is now a property, so we don't need
this signal anymore.
Matthias Clasen [Sun, 3 Mar 2019 13:10:14 +0000 (08:10 -0500)]
popover: Stop using ::set-focus
This will change completely when GtkPopover becomes a
root. For now, stop using ::set-focus and just use the
focus-widget property.
Matthias Clasen [Sun, 3 Mar 2019 13:06:53 +0000 (08:06 -0500)]
filechooser: Stop using ::set-focus
We can achieve the same with the focus-widget property.
Matthias Clasen [Sun, 3 Mar 2019 12:55:14 +0000 (07:55 -0500)]
inspector: Stop using ::set-focus
The focus-widget is just a regular property now that shows
up on the property page. No need to special-case it on
the misc page anymore.
Matthias Clasen [Sun, 3 Mar 2019 02:03:38 +0000 (21:03 -0500)]
Drop gtk_widget_send_focus_change
Replace this with gtk_widget_set_has_focus + gtk_widget_event.
Matthias Clasen [Thu, 7 Mar 2019 03:26:27 +0000 (22:26 -0500)]
widget: Add a private setter for has-focus
Matthias Clasen [Sun, 3 Mar 2019 01:32:11 +0000 (20:32 -0500)]
Exclude non-drawable widgets from focus
This was showing up as confusion between palette
and editor in the color chooser.
Matthias Clasen [Sat, 2 Mar 2019 18:22:43 +0000 (13:22 -0500)]
widget: Drop the ::focus signal
The focus vfunc is an implementation detail
of GTK focus handling, and having external
signal handlers interfere with it is not
a good idea.
Matthias Clasen [Sat, 2 Mar 2019 17:52:56 +0000 (12:52 -0500)]
Simplify the move_focus api
No need to pass the array in from the outside.
Matthias Clasen [Sat, 2 Mar 2019 16:40:09 +0000 (11:40 -0500)]
Move a check to gtk_window_set_focus
gtk_widget_grab_focus is just a wrapper for
gtk_window_set_focus. We should do all the enforcement
there.
Matthias Clasen [Sat, 2 Mar 2019 13:49:00 +0000 (08:49 -0500)]
Port widgets to the root focus API
Matthias Clasen [Sat, 2 Mar 2019 13:46:21 +0000 (08:46 -0500)]
window: Implement the root focus api
This just uses the existing get/set_focus functions.
We keep them public for now.
Matthias Clasen [Sat, 2 Mar 2019 13:45:13 +0000 (08:45 -0500)]
root: Add focus
Add a getter and a setter for the focus widget.
The default implementations do nothing.
Matthias Clasen [Sat, 2 Mar 2019 05:54:56 +0000 (00:54 -0500)]
Redo focus handling
GtkWindow has a focus_widget that points to the current input focus.
GtkWidget has a focus_child that points to the child that contains
the input focus. Following the focus_child chain from the toplevel
always leads to the focus_widget. We never unset focus_child, we only
set it. We bubble focus change events.
Matthias Clasen [Sun, 17 Mar 2019 01:03:52 +0000 (21:03 -0400)]
password entry: Fix property notification
Both placeholder-text and activates-default were not
up to our usual standards for property notification,
and the tests complained.
Matthias Clasen [Sun, 17 Mar 2019 00:57:50 +0000 (20:57 -0400)]
search entry: Fix property notification
Both placeholder-text and activates-default were not
up to our usual standards for property notification,
and the tests complained.
Matthias Clasen [Sun, 17 Mar 2019 00:41:51 +0000 (20:41 -0400)]
single selection: Skip tests properly
Do runtime checks for the GLib version,
instead of compiling out tests.
This avoids compiler warnings.
Matthias Clasen [Sun, 24 Feb 2019 13:19:05 +0000 (08:19 -0500)]
widget: Check rootness for invisibility
Make the function that determines initial visibility
look at whether the class implements GtkRoot. That is
the eventual goal for this check. For now, allow
popovers in here as well.
Jordi Mas [Sat, 16 Mar 2019 21:06:43 +0000 (22:06 +0100)]
Update Catalan translation
Matthias Clasen [Fri, 15 Mar 2019 18:35:25 +0000 (14:35 -0400)]
password entry: Don't show both icons
It can be a bit confusing to have an indicator
and an action next to each other, and with the
peek icon, the need for the Caps Lock warning is
reduced, since you can just reveal the text to
see that it is capitalized.
Therefore, only show the Caps Lock warning if
the peek icon is disabled.
Matthias Clasen [Fri, 15 Mar 2019 14:34:06 +0000 (10:34 -0400)]
Add a tagged entry demo
This can serve as an example for how composite entries
can now be done outside of GTK, easily.
Matthias Clasen [Thu, 14 Mar 2019 22:53:28 +0000 (18:53 -0400)]
gtk-demo: Show password peek icon
Matthias Clasen [Wed, 13 Mar 2019 20:27:07 +0000 (16:27 -0400)]
password entry: Add a way to see the content
Add a ::show-peek-icon property and show a clickable
icon when it is set. Clicking it toggles the visibility
of the content. The same functionality is also accessible
via a context menu item.
This is a common feature of password entries.
Matthias Clasen [Fri, 15 Mar 2019 00:03:34 +0000 (20:03 -0400)]
password entry: Make the Caps Lock icon less prominent
Set a style class, and theme the Caps Lock icon to
be less promient, so it does not appear clickable.
Matthias Clasen [Thu, 14 Mar 2019 23:17:39 +0000 (19:17 -0400)]
password entry: Use text cursor for Caps Lock indicator
We don't want it to appear clickable, but we still
need to keep it pickable for the tooltip to work,
so explicitly give it the same cursor that we use
for the text.
Matthias Clasen [Thu, 14 Mar 2019 23:15:31 +0000 (19:15 -0400)]
entry: Make progress bar not pickable
There is no need for that, we don't want to
handle input here at all.
Matthias Clasen [Thu, 14 Mar 2019 22:59:35 +0000 (18:59 -0400)]
password entry: a better Caps Lock icon
This is more in line with how Caps Lock
is typically indicated.
Matthias Clasen [Wed, 13 Mar 2019 22:53:13 +0000 (18:53 -0400)]
gtk-demo: Add a password entry demo
Matthias Clasen [Wed, 13 Mar 2019 23:17:19 +0000 (19:17 -0400)]
password entry: Add placeholder-text and activates-default
Add ::placeholder-text and ::activates-default properties.
Password entries are going to be used in dialogs, where
these two properties are useful.
Matthias Clasen [Wed, 13 Mar 2019 20:34:27 +0000 (16:34 -0400)]
password entry: Initialize capslock state
The icon was erroneously showing up before the first
focus-in event.
Matthias Clasen [Wed, 13 Mar 2019 21:44:01 +0000 (17:44 -0400)]
a11y: More entry fixes
Remove the GtkEntry assumption from more places.
Matej Urbančič [Tue, 12 Mar 2019 19:25:31 +0000 (20:25 +0100)]
Updated Slovenian translation
Nathan Follens [Sun, 10 Mar 2019 13:02:39 +0000 (13:02 +0000)]
Update Dutch translation
Benjamin Otte [Fri, 8 Mar 2019 13:12:17 +0000 (14:12 +0100)]
text: Simplify
The previous arguments were equivalent to using NULL.
Benjamin Otte [Fri, 8 Mar 2019 13:12:04 +0000 (14:12 +0100)]
text: Remove two unused member variables
Benjamin Otte [Fri, 8 Mar 2019 12:39:52 +0000 (13:39 +0100)]
text: Use gtk_widget_set_overflow()
Benjamin Otte [Fri, 8 Mar 2019 12:33:54 +0000 (13:33 +0100)]
text: Remove 2 unused variables
One is always 0, the other is always equal to gtk_widget_get_width()
Benjamin Otte [Fri, 8 Mar 2019 12:19:13 +0000 (13:19 +0100)]
colorswatch: Use gtk_widget_set_overflow()
Benjamin Otte [Fri, 8 Mar 2019 12:17:51 +0000 (13:17 +0100)]
widget: Make overflow respect rounded corners
Fixes !574
Bastien Nocera [Thu, 7 Mar 2019 15:29:28 +0000 (16:29 +0100)]
gsk: API docs fixes
gsk/gskenums.h:181: Error: Gsk: multiple "@GSK_TRANSFORM_CATEGORY_2D" parameters for identifier "GskTransformCategory":
* @GSK_TRANSFORM_CATEGORY_2D: The matrix is a 2D matrix. This is equivalent
^
gsk/gsktransform.c:1342: Warning: Gsk: gsk_transform_to_2d: unknown parameter 'm' in documentation comment, should be 'self'
gsk/gsktransform.c:1368: Warning: Gsk: gsk_transform_to_2d: invalid return annotation
gsk/gsktransform.c:1461: Warning: Gsk: gsk_transform_to_translate: unknown parameter 'm' in documentation comment, should be 'self'
Benjamin Otte [Thu, 7 Mar 2019 12:06:37 +0000 (13:06 +0100)]
revealer: Add swing transitions
And make the revealer on page 2 of the widget-factory use one.
Piotr Drąg [Thu, 7 Mar 2019 10:56:27 +0000 (11:56 +0100)]
Update Polish translation
Matthias Clasen [Thu, 7 Mar 2019 04:38:52 +0000 (23:38 -0500)]
x11: Don't emit GDK_NOTHING events
They are good for nothing.
Benjamin Otte [Wed, 6 Mar 2019 11:39:56 +0000 (12:39 +0100)]
rendernode: Add can_diff implementation for transform nodes
That one was missing and killing performance in the fishbowl.
Timm Bäder [Wed, 6 Mar 2019 08:03:17 +0000 (09:03 +0100)]
entry: Update CSS node docs
Remove all the nodes that are subnodes of GtkText nowadays and refer to
the GtkText docs instead.
Timm Bäder [Tue, 5 Mar 2019 08:03:11 +0000 (09:03 +0100)]
gl renderer: Cache rendered fallback nodes
Timm Bäder [Tue, 5 Mar 2019 08:00:55 +0000 (09:00 +0100)]
gl renderer: Mark pointer textures as used
Otherwise we remove them, causing additional texture uploads.
Benjamin Otte [Tue, 5 Mar 2019 08:27:30 +0000 (09:27 +0100)]
transform: Add perspective()
This commit adds gsk_transform_perspective(), gtk_snapshot_perspective()
and support for perspective() in the CSS syntax.
Benjamin Otte [Mon, 4 Mar 2019 21:11:57 +0000 (22:11 +0100)]
rendernode: Implement diffing of transform nodes
This reinstates diffing in the same way that it worked for offset nodes.
It would be possible to add diffing for affine transforms or even all
transforms, but I think this is unnecessary right now - and also quite
expensive to compute.
Benjamin Otte [Mon, 4 Mar 2019 20:43:44 +0000 (21:43 +0100)]
transform: Readd optimization
This is the optimization from
bbd4e2f60d9e060fbe3b0c2dcebcd1d6b7335a2a
Benjamin Otte [Mon, 4 Mar 2019 18:33:04 +0000 (19:33 +0100)]
transform: Redo querying API
Make the API expect a tranform of the proper category instead of
doing the check ourselves and returning TRUE/FALSE.
The benefit is that the mai use case is switch (transform->category)
statements and in those we know the category and don't need to check
TRUE/FALSE.
Using the wrong matrix will now cause a g_warning().
Benjamin Otte [Mon, 4 Mar 2019 08:20:58 +0000 (09:20 +0100)]
transform: Store the category in the transform
... instead of computing it every time we need it.
This should be faster and we want to use it a lot more prominently.
Also, we have the struct memory available anyway.
Benjamin Otte [Sun, 3 Mar 2019 16:57:11 +0000 (17:57 +0100)]
transform: Implement gsk_transform_invert()
And use it.
And test it.
Benjamin Otte [Sat, 2 Mar 2019 10:46:07 +0000 (11:46 +0100)]
transform: Remove gsk_transform_identity()
This used to be a good idea back when GskTransform was intended to be
used for transitions, but without it, it's not anymore.
Benjamin Otte [Sat, 2 Mar 2019 04:15:47 +0000 (05:15 +0100)]
widget: Make transform a GskTransform
This concludes pushing transforms down into GskTransform.
What's remaining is potentially pushing it further into the renderers.
Benjamin Otte [Sat, 2 Mar 2019 03:39:46 +0000 (04:39 +0100)]
testsuite: Add a transforms test
In particular, check that to_matrix() and to_2d(), to_affine() and
to_translate() return the same values.
This also requires a recent Graphene version or the tests will fail.
Benjamin Otte [Sat, 2 Mar 2019 03:35:44 +0000 (04:35 +0100)]
trasnform: Fix print statement
We were printing the wrong variable.
Benjamin Otte [Sat, 2 Mar 2019 02:21:09 +0000 (03:21 +0100)]
transform: Split rotate() and rotate3d() class
This is mainly for accuracy: We can guarantee the math we do for 2D
rotations results in a 2D matrix.
Benjamin Otte [Fri, 1 Mar 2019 06:51:23 +0000 (07:51 +0100)]
transform: Make category public API
Also rename it from GskMatrixCategory to GskTransformCategory.
Benjamin Otte [Fri, 1 Mar 2019 05:48:30 +0000 (06:48 +0100)]
transform: Remove API to poke internals
It is not interesting to users of GskTransform how it is made up
internally. Users should just use the gsk_transform_to_*() APIs.
Benjamin Otte [Fri, 1 Mar 2019 05:35:55 +0000 (06:35 +0100)]
rendernode: Make the transform node take a GskTransform
This is an attempt to push GskTransform deeper into the stack.
Benjamin Otte [Fri, 1 Mar 2019 05:24:33 +0000 (06:24 +0100)]
transform: Add more API
In particular, add a per-category querying API for the matrix:
- gsk_transform_to_translate()
- gsk_transform_to_affine()
- gsk_transform_to_2d()
- gsk_transform_to_matrix()
This way, code can use the relevant one for the given category.
Benjamin Otte [Thu, 28 Feb 2019 08:52:49 +0000 (09:52 +0100)]
transform: Move to GSK
The renaming of the prefix makes this a large patch.
Matthias Clasen [Mon, 4 Mar 2019 17:36:10 +0000 (17:36 +0000)]
Merge branch 'adwaita-typo-fix-master' into 'master'
Adwaita: Fix typo (missing comma)
Closes #1713
See merge request GNOME/gtk!618
Christoph Reiter [Sun, 3 Mar 2019 09:38:18 +0000 (10:38 +0100)]
treeview: make sure separator nodes have a height > 0
In case the theme doesn't set a height/min-height for the treeview
separator the treeview drawing gets confused and draws rows on top of each
other depending on the redraw area.
This is due to gtk_tree_view_get_row_height() assuming that a node with a
height <= 0 is not set and not a separator and it will default to the
expander size.
Ideally gtk_tree_view_get_row_height() would know if it operates on a separator,
but there are too many calls/levels, so just make sure the separator height
is at least 1 (Adwaita already sets "min-height: 2px", so no change there)
Cherry-picked from !614 to master
Alex Monday [Mon, 4 Mar 2019 15:30:43 +0000 (15:30 +0000)]
Adwaita: Fix typo (missing comma)
Closes https://gitlab.gnome.org/GNOME/gtk/issues/1713
(cherry picked from commit
0b61d6f6aef9fba35e896ac437a66b78eb649f75)
Emmanuele Bassi [Mon, 4 Mar 2019 11:35:18 +0000 (11:35 +0000)]
Merge branch 'notebook-notify-page-not-child' into 'master'
notebook: Notify the notebook page, not the child
See merge request GNOME/gtk!616
Matthias Clasen [Mon, 4 Mar 2019 03:55:34 +0000 (22:55 -0500)]
search entry: Fix a copy-paste error
Matthias Clasen [Mon, 4 Mar 2019 03:14:19 +0000 (22:14 -0500)]
entries: Fix mnemonic activation
Since entries are no longer can-focus, the default
mnemonic_activate handler refuses to act on them.
Peter Bloomfield [Sun, 3 Mar 2019 23:21:10 +0000 (18:21 -0500)]
notebook: Notify the notebook page, not the child
Call g_object_notify() on the GtkNotebookPage, not the child GtkWidget.
Fixes some issues in !594.
Benjamin Otte [Sun, 3 Mar 2019 18:40:32 +0000 (19:40 +0100)]
widget: Fix gtk_widget_pick() on 3d-transformed widgets
Picking is done by drawing a line along the parent's z axis and picking
at the intersection with the child's z=0 plane.
However, the previous code was casting a ray along the child's z axis.
This patch actually transforms the line to pick into the target's
coordinate system and then computes the corrrect intersection with the
z=0 plane.
Using graphene_point3d_interpolate() to compute the final intersection
point is a bit of abuse of that function, but I found no better way in
Graphene to achieve the same thing.
Matthias Clasen [Sun, 3 Mar 2019 17:42:20 +0000 (12:42 -0500)]
gtk-demo: Minimally fix the sarch entry demo
This was broken by the entry refactoring.
Matej Urbančič [Sat, 2 Mar 2019 19:57:57 +0000 (20:57 +0100)]
Updated Slovenian translation
Timm Bäder [Sat, 2 Mar 2019 04:28:55 +0000 (05:28 +0100)]
Fix compile time warnings
Timm Bäder [Sat, 2 Mar 2019 04:25:43 +0000 (05:25 +0100)]
a11y: Include gtktextaccesible.h in gtk-a11y.h
Closes #1710
Emmanuele Bassi [Fri, 1 Mar 2019 12:23:26 +0000 (12:23 +0000)]
Merge branch 'redundant-editable-api' into 'master'
entry, spin button: Drop redundant API
See merge request GNOME/gtk!611
Matthias Clasen [Thu, 28 Feb 2019 19:31:36 +0000 (14:31 -0500)]
entry, spin button: Drop redundant API
Avoid duplicating GtkEditable APIs. Port existing users.
Timm Bäder [Thu, 28 Feb 2019 08:44:08 +0000 (09:44 +0100)]
roundedrect: Add gsk_rounded_rect_to_string
Keep it private for now, but it's very useful when debugging.
Timm Bäder [Thu, 28 Feb 2019 09:12:17 +0000 (10:12 +0100)]
gl renderer: Change shadow cache eviction strategy
Since we can do partial redraws, dropping every shadow that's been
unused for one frame happens too fast. This is also a problem when a
shadow gets drawn on a texture for a few frames.
Timm Bäder [Tue, 26 Feb 2019 05:49:59 +0000 (06:49 +0100)]
gl renderer: Ignore nodes with nan bounds
This can happen for certain transform nodes. The transform node's
child's bounds are fine, but the transform node bounds are all nan.
Just ignore those bounds since we can't meaningfully render them anyway.
Timm Bäder [Tue, 26 Feb 2019 06:24:18 +0000 (07:24 +0100)]
transformnode: Avoid matrix multiplication if we can
If the given matrix is explicitly of category IDENTITY, we don't need to
do anything, and in the 2D_TRANSLATE case, just offset the child bounds.
Those are the two most common cases.
Timm Bäder [Tue, 26 Feb 2019 06:17:08 +0000 (07:17 +0100)]
gl renderer: Add more nodes that support transforms
Matthias Clasen [Thu, 28 Feb 2019 04:47:39 +0000 (23:47 -0500)]
entry: Don't use the buffer directly
We want to be a wrapper of the GtkText, which in turn
wraps the GtkEntryBuffer. Not some weird mix.
Matthias Clasen [Thu, 28 Feb 2019 03:42:27 +0000 (22:42 -0500)]
treeview: Stop using set_focus_child
Do this with an event controller on the buttons instead.
Nirbheek Chauhan [Wed, 27 Feb 2019 14:46:22 +0000 (14:46 +0000)]
Merge branch 'alatiera/python3' into 'master'
build: Use python3 for the post install script
See merge request GNOME/gtk!608